home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-06-06 | 7.0 KB | 274 lines | [TEXT/CWIE] |
- {•This sourcecode is an example for creating a FKey coderesource with•}
- {•Metrowerks Pascal. It is copyrighted by Peter Hoerster and released•}
- {•for free use in any Shareware or Freeware product as a way to thank all•}
- {•programmers who share code snippets. You may put this sources on any•}
- {•CD ROM or any Archive Server but you may not sell it. •}
-
- {• For comments please write to <hoerster@muenster.de>•}
-
-
- unit BahaiDate;
-
- interface
- uses
- Types, OSUtils, GestaltEqu, Script, notification, Resources, Events,
- PascalA4, QuickDraw, ToolUtils, Memory, LowMem, Scrap, script;
-
-
-
- {$MAIN}
-
- procedure main;
-
-
- implementation
-
- procedure dopaste;
- const
- pastecode=2422;
- var
- qel: EvQelPtr;
- begin
- if ppostevent(3, pastecode, qel) = noerr then
- qel^.evtqmodifiers := cmdkey;
- end;
-
-
- procedure main;
- var
-
- var
- oldA4: LongInt;
- BahaiMonth: array[1..20] of str31;
- NumberOfDaysInMonth: array[1..12] of integer;
- Day, Month, Year: longint;
- Result: str255;
- alongint: longint;
- myerr: oserr;
- procedure InitGerman;
- begin
- BahaiMonth[1] := 'Sharaf - Ehre';
- BahaiMonth[2] := 'Sultán - Herrschaft';
- BahaiMonth[3] := 'Mulk - Hoheit';
- BahaiMonth[4] := 'Ayyam-i-Há';
- BahaiMonth[5] := 'Alá - Erhabenheit';
- BahaiMonth[6] := 'Bahá - Glanz';
- BahaiMonth[7] := 'Jalal - Ruhm';
- BahaiMonth[8] := 'Jamal - Schönheit';
- BahaiMonth[9] := '`Azamat - Größe';
- BahaiMonth[10] := 'Nur - Licht';
- BahaiMonth[11] := 'Rahmat - Erbarmen';
- BahaiMonth[12] := 'Kalimat - Worte';
- BahaiMonth[13] := 'Kamál - Vollkommenheit';
- BahaiMonth[14] := 'Asmá´ - Namen';
- BahaiMonth[15] := '`Izzat - Würde';
- BahaiMonth[16] := 'Mashíat - Wille';
- BahaiMonth[17] := '`Ilm - Wissen';
- BahaiMonth[18] := 'Qudrat - Macht';
- BahaiMonth[19] := 'Qawl - Sprache';
- BahaiMonth[20] := 'Masá`il - Fragen';
- end;
- procedure InitEnglish;
- begin
- BahaiMonth[1] := 'Sharaf - Honor';
- BahaiMonth[2] := 'Sultán - Souvereignty';
- BahaiMonth[3] := 'Mulk - Dominion';
- BahaiMonth[4] := 'Ayyam-i-Há - Intercalery day';
- BahaiMonth[5] := 'Alá - Loftiness';
- BahaiMonth[6] := 'Bahá - Splendor';
- BahaiMonth[7] := 'Jalal - Glory';
- BahaiMonth[8] := 'Jamal - Beauty';
- BahaiMonth[9] := '`Azamat - Grandeur';
- BahaiMonth[10] := 'Nur - Light';
- BahaiMonth[11] := 'Rahmat - Mercy';
- BahaiMonth[12] := 'Kalimat - Words';
- BahaiMonth[13] := 'Kamál - Perfection';
- BahaiMonth[14] := 'Asmá´ - Names';
- BahaiMonth[15] := '`Izzat - Might';
- BahaiMonth[16] := 'Mashíat - Will';
- BahaiMonth[17] := '`Ilm - Knowledge';
- BahaiMonth[18] := 'Qudrat - Power';
- BahaiMonth[19] := 'Qawl - Speech';
- BahaiMonth[20] := 'Masá`il - Questions';
- end;
-
-
- procedure InitJapan;
- begin
- BahaiMonth[1] := 'Sharaf - ñºó_';
- BahaiMonth[2] := 'Sultán - ìùé°å†';
- BahaiMonth[3] := 'Mulk - éÂå†';
- BahaiMonth[4] := 'Ayyam-i-Há';
- BahaiMonth[5] := 'Alá - çÇèÆ';
- BahaiMonth[6] := 'Bahá - âÿóÌ';
- BahaiMonth[7] := 'Jalal - é^î¸';
- BahaiMonth[8] := 'Jamal - î¸';
- BahaiMonth[9] := '`Azamat - ësëÂÇ≥';
- BahaiMonth[10] := 'Nur - åı';
- BahaiMonth[11] := 'Rahmat - éúîfl';
- BahaiMonth[12] := 'Kalimat - åæót';
- BahaiMonth[13] := 'Kamál - è[é¿';
- BahaiMonth[14] := 'Asmá´ - ñºëO';
- BahaiMonth[15] := '`Izzat - àÃóÕ';
- BahaiMonth[16] := 'Mashíat - à”éu';
- BahaiMonth[17] := '`Ilm - íméØ';
- BahaiMonth[18] := 'Qudrat - óÕ';
- BahaiMonth[19] := 'Qawl - åæìÆ';
- BahaiMonth[20] := 'Masá`il - ñ‚ìö';
- end;
-
-
- procedure initmonths;
- var
- i:integer;
- result: longint;
- begin
- result := getscriptVariable(-1, smscriptlang);
- if result = 2 then
- InitGerman
- else if result = 11 then
- InitJapan
- else
- InitEnglish;
- for i:=1 to 12 do
- NumberOfDaysInMonth[i] := 31;
- NumberOfDaysInMonth[4] := 30;
- NumberOfDaysInMonth[6] := 30;
- NumberOfDaysInMonth[9] := 30;
- NumberOfDaysInMonth[11] := 30;
- end;
-
-
-
-
- function convertit: str255;
- var
-
- f: longint;
- e: Integer;
-
-
- function AddDayInLeapYear: integer;
- begin
- if Year mod 4 = 0 then {LeapYear?}
- begin
- NumberOfDaysInMonth[2] := 29;
- AddDayInLeapYear := 5;
-
- end
- else
- begin
- NumberOfDaysInMonth[2] := 28;
- AddDayInLeapYear := 4;
-
- end
- end;
-
- function DayInYear:integer;
- var
- c,i: integer;
- begin
- c := 0;
- for i := 1 to Month do
- c := c + NumberOfDaysInMonth[i];
- DayInYear := c - NumberOfDaysInMonth[Month] + Day;{Berechnung der Tagesordnungs-Zahl c im Jahr}
- end;
-
-
-
- procedure DoDayMonthYear(LeapDays:integer;TheDay:integer);
- begin
- if TheDay < 57 then{Block vor den Eingeschobenen Tagen}
- begin
- e := (TheDay div 19) + 1; {e ist BIMonats-Zahl}
- f := 1 + round((TheDay + 19) - e * 19); {f ist Tagesordnungs-Zahl im BIMonat}
- end
- else if TheDay < 57 + LeapDays then {eingeschobene Tage}
- begin
- e := 4;{e ist BIMonats-Zahl}
- f := TheDay - 56;{f ist Tagesordnungs-Zahl im BIMonat}
- end
- else if TheDay > 56 + LeapDays then {Block nach den eingeschobenen Tagen}
- begin
- e := 2 + ((TheDay - LeapDays) div 19); {e ist BIMonats-Zahl}
- f := 1 + round((TheDay - LeapDays + 38) - e * 19); {f ist Tagesordnungs-Zahl im BIMonat}
- end;
- Year := Year - 1844;
- if TheDay > 75 + LeapDays then
- Year := succ(Year); {Jahr ist jetzt das Bahá'i Jahr}
- end;
-
- function ResultString: str255;
- var
- badi: string[32];
- thestr, stri: str255;
- begin
- if e > 20 then
- e := 1;
- badi := BahaiMonth[e];
- numtostring(f, stri);
- numtostring(Year, thestr);
- ResultString := concat(stri, '. ', badi, ' ', thestr);
-
- end;
-
- begin
- DoDayMonthYear(AddDayInLeapYear,DayInYear);
- convertit := ResultString;
- end;
-
-
-
-
- function scraphandling: boolean;
- var
-
- newsize, mysize: size;
- cliphandle: handle;
- datecache: DateCacheRecord;
- thedate: datetimerec;
- lenghtused: longint;
- datetime: longdaterec;
- dateresult: String2DateStatus;
- begin
- scraphandling := false;
- if InitDateCache(@datecache) = noerr then
- begin
- clipHandle := NewHandle(0);
- mysize := GetScraP(clipHandle, 'TEXT', newsize);
- dateresult := StringToDate (cliphandle^, gethandlesize(cliphandle), @datecache, lenghtused, datetime);
- case dateresult of
- noerr, longDateFound, leftoverchars, sepnotintlsep, fieldordernotintl, extraneousstrings, toomanyseps, sepnotconsistent:
- begin
- {22.2.1922}
- Day := datetime.day;
- Month := datetime.month;
- Year := datetime.year;
- scraphandling := true;
- end;
- otherwise
- begin
- GetDateTime(aLongInt);
- SecondsToDate (alongint, thedate);
- Day := thedate.day;
- Month := thedate.month;
- Year := thedate.year;
- scraphandling := true;
- end;
- end;
- end;
- end;
- begin
- oldA4 := SetCurrentA4;
- initmonths;
- if scraphandling = true then
- begin
- Result := convertit;
- myerr := Zeroscrap;
- alongint := length(Result);
- myErr := PutScrap(alongint, 'TEXT', @Result[1]);
- dopaste;
- end;
- oldA4 := SetA4(oldA4);
- end;
- end.